package com.kspichale.strom_demo; import java.util.List; import backtype.storm.generated.StormTopology; import backtype.storm.topology.TopologyBuilder; import backtype.storm.tuple.Fields; public class RankingTopology { private static final String RANKING_LIST_BOLT = "rankingListBolt"; private static final String COUNTING_BOLT = "countingBolt"; private static final String DISPATCHER_BOLT = "dispatcherBolt"; private static final String LOGGING_SPOUT = "loggingSpout"; public static StormTopology buildTopology(final List<String> urls) { final TopologyBuilder builder = new TopologyBuilder(); builder.setSpout(LOGGING_SPOUT, new UrlSpout(urls), 1); builder.setBolt(DISPATCHER_BOLT, new DispatcherBolt(), 2).shuffleGrouping(LOGGING_SPOUT); builder.setBolt(COUNTING_BOLT, new CountingBolt(), 2).fieldsGrouping(DISPATCHER_BOLT, new Fields("url")); builder.setBolt(RANKING_LIST_BOLT, new RankingListBolt(), 1).globalGrouping(COUNTING_BOLT); return builder.createTopology(); } }